﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AgendaManager.AgendaService;
using System.IO;

namespace AgendaManager
{
    public partial class frmContenido : Form
    {
        public InformeSemanal InformeSemanal { get; set; }
        
        //ToDo: Borrar.
        //AgendaService.Service1 ws = new AgendaService.Service1();

        private List<IvoNota> Archivos = new List<IvoNota>();

        public frmContenido()
        {
            InitializeComponent();
        }

        private void frmContenido_Load(object sender, EventArgs e)
        {
            //if (InformeSemanal != null)
            //{
            //    {
            //        txNombre.Text = InformeSemanal.Nombre;

            //        Archivos = ConnectHelper.ws.RetrieveEntities(new IvoNota(),
            //            InformeSemanal.Id.ToString()).Cast<IvoNota>().ToList();

            //        //List<IvoNota> aux = new List<IvoNota>();
            //        var aux = (from a in Archivos
            //               select new
            //               {
            //                   Id = a.Id,
            //                   CarpetaId = a.CarpetaId,
            //                   Nomrbre = a.Nombre,
            //                   Extension = a.Extension
            //               }).ToList();

            //        gvContenido.DataSource = null;
            //        gvContenido.DataSource = aux;
            //    }
            //    catch (Exception ex)
            //    {
                    
            //        throw;
            //    }
                
            //}
        }

        private void btDescargar_Click(object sender, EventArgs e)
        {
            if (gvContenido.SelectedRows.Count == 1)
            {
                try
                {
                    IvoNota contenido = new IvoNota();

                    int aux = Convert.ToInt32(gvContenido.SelectedRows[0].Cells["Id"].Value);

                    contenido = Archivos.Where(x => x.Id == aux).First();

                    //contenido = (IvoNota)gvContenido.SelectedRows[0].DataBoundItem;

                    this.saveFileDialog.FileName = contenido.Nombre;
                    this.saveFileDialog.DefaultExt = contenido.Extension;
                    this.saveFileDialog.ShowDialog();
                    File.WriteAllBytes(saveFileDialog.FileName, contenido.Archivo);

                    MessageBox.Show("El contenido ha sido descargado correctamente.",
                                "Descarga Contenido.",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                }
                catch (Exception)
                {
                    MessageBox.Show("Ocurrió un problema al descargar el archivo, por favor intente nuevamente mas tarde.",
                                "Descarga Contenido.",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Information);
                    throw;
                }
                
            }
        }

        private void btAdd_Click(object sender, EventArgs e)
        {

            this.openFileDialog.Multiselect = true;
            this.openFileDialog.Title = "Select File";

            DialogResult dr = this.openFileDialog.ShowDialog();
            if (dr == System.Windows.Forms.DialogResult.OK)
            {
                foreach (string file in openFileDialog.FileNames)
                {
                    try
                    {
                        byte[] archivo = File.ReadAllBytes(file);

                        IvoNota contenido = new IvoNota();
                        
                        contenido.Nombre = Path.GetFileNameWithoutExtension(file);
                        contenido.Archivo = archivo;
                        contenido.Extension = Path.GetExtension(file);
                        //ToDo: Cambiar
                        //contenido.CarpetaId = InformeSemanal.Id;

                        contenido = ConnectHelper.ws.NuevoContenido(contenido);
                    }
                    catch (Exception)
                    {

                        throw;
                    }
                }

                MessageBox.Show("El contenido ha sido guardado exitosamente.",
                            "Nuevo Contenido.",
                            MessageBoxButtons.OK,
                            MessageBoxIcon.Information);        


                //string file = openFileDialog.FileName;
                //try
                //{
                //    byte[] archivo = File.ReadAllBytes(file);

                //    using (frmNuevoArchivo f = new frmNuevoArchivo())
                //    {
                //        if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                //        {
                //            contenido.Nombre = f.Nombre;
                //        }
                //        else
                //        {
                //            contenido.Nombre = file;
                //        }
                //    }

                //    contenido.Archivo = archivo;
                //    contenido.Extension = Path.GetExtension(file);
                //    contenido.InformeSemanalId = InformeSemanal.Id;

                //    contenido = ConnectHelper.ws.NuevoContenido(contenido);

                //    MessageBox.Show("El contenido ha sido guardado exitosamente.",
                //                "Nuevo IvoNota.",
                //                MessageBoxButtons.OK,
                //                MessageBoxIcon.Information);
                //}
                //catch (Exception ex)
                //{
                //    MessageBox.Show("Error: " + ex.Message);
                //}
            }
        }
    }
}
